#ifndef _SCULL_H
#define _SCULL_H

#include <linux/cdev.h>
#include <linux/ioctl.h>

struct scull_dev {
    struct cdev cdev;
    struct kobject *kobj;
};

// Device name
#define SCULL_NAME "scull"
// Major devno, 0 means dynamic alloc
#define SCULL_MAJOR 0
// Start minor devno
#define SCULL_MINOR 0
// Scull device count
#define SCULL_COUNT 4

// Default scull qset array size
#define SCULL_QSET 1000
// Default scull quantum size
#define SCULL_QUANTUM 4000

extern int scull_major;
extern int scull_minor;
extern int scull_qset;
extern int scull_quantum;

int scull_dev_sysfs_init(struct scull_dev *sdev);
int scull_dev_sysfs_deinit(struct scull_dev *sdev);

#endif // _SCULL_H
